package 区间相关问题;

import java.util.Arrays;

//给出一个区间的集合，请合并所有重叠的区间。
public class 合并区间 {
    public static void main(String[] args) {
        //[[1,3],[2,6],[8,10],[15,18]]
        int[][] intervals={{1,4},{5,6}};
        int[][] merge = merge(intervals);
        for (int[] ints : merge) {
            System.out.println(Arrays.toString(ints));
        }
    }
    public static int[][] merge(int[][] intervals) {
        //对数组进行排序
        //假设传来两个值，v1 与 v2，那么他们的先后顺序以 v1[0] 比 v2[0] 的结果为准，
        // 即：若 v1[0] < v2[0] 则 v1 < v2，若 = 则 =，若 > 则 >
        Arrays.sort(intervals,(v1,v2)-> v1[0]-v2[0]);
        if (intervals.length<2)
            return intervals;
        int n=intervals.length;
        int[][] res = new int[n][2];
        int idx=-1;
        for (int[] m : intervals) {
            if (idx==-1 || res[idx][1]<m[0])
                res[++idx]=m;
            else
                res[idx][1]=Math.max(m[1],res[idx][1]);
        }
        return Arrays.copyOf(res,idx+1);
    }
    }
